package org.gp.Interfaz;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import java.awt.GridLayout;

import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.JTextField;

import org.gp.tringes.GestorIGGestionarCarreras;
import org.gp.tringes.GestorIGInicio;

import java.awt.FlowLayout;
import java.util.Iterator;

import javax.swing.JComboBox;


public class IGAnadirCarrera extends JDialog {
	private String campeonato;
		
	private JLabel lblLugar;
	private JTextField txtLugar;
	private JButton btnAnadir;
	private JButton btnCancelar;
	private JLabel lblFechaCom;
	private JTextField textFechaCom;

	
	private JPanel panel;
	private JPanel panel_1;
	private JPanel panel_2;
	private JPanel panel_4;
	private JLabel lblInvisible;
	private JLabel lblNewLabel;
	private JLabel lblRecorrido;
	private JTextField textRecorrido;
	private JLabel lblModalidad;
	private JComboBox comboModalidad;

	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					IGAnadirCarrera dialog = new IGAnadirCarrera("");
					dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
					dialog.setVisible(true);
					dialog.setModal(true);
					dialog.setResizable(false);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	
	public IGAnadirCarrera(String pIdCampeonato) {

		campeonato=pIdCampeonato;
		setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
		//ID-35
		setTitle(GestorIGInicio.getGestorIGInicio().getTexto(35));
		setBounds(100, 100, 411, 288);
		getContentPane().setLayout(new BorderLayout(0, 0));
		getContentPane().add(getPanel(), BorderLayout.CENTER);
		getContentPane().add(getPanel_1(), BorderLayout.SOUTH);
		getContentPane().add(getPanel_2(), BorderLayout.NORTH);
		
	}

	
	
	/*********
	 * Botones
	 * 
	 *********/
	private JButton getBtnAnadir(){
		if(btnAnadir == null){
			//ID-29
			btnAnadir = new JButton(GestorIGInicio.getGestorIGInicio().getTexto(29));
			btnAnadir.addMouseListener(new MouseAdapter() {
				@Override
				public void mouseClicked(MouseEvent e) {
					String pLugar=txtLugar.getText();
					String pRecorrido=textRecorrido.getText();
					String pModalidad= (String) comboModalidad.getSelectedItem();
					String pFecha=textFechaCom.getText();
					//Comprobamos que los datos introducidos son correctos
					
					//Comprobamos que el lugar tiene la longitud apropiada
					boolean esCorrectoLugar = GestorIGGestionarCarreras.getGestorIGGestionarCarreras().comprobarLongitud(pLugar,30);
					//Comprobamos que el recorrido tiene la longitud apropiada
					boolean esCorrectoRecorr = GestorIGGestionarCarreras.getGestorIGGestionarCarreras().comprobarLongitud(pRecorrido,50);
					//Comprobamos que ha seleccionado una modalidad de trineo
					boolean seHaselecModalidad;
					if(pModalidad!=null){
						seHaselecModalidad=true;
					}else{
						seHaselecModalidad=false;}
					
					//Comprobamos que la fecha tiene el formato adecuado
					boolean esCorrecta = GestorIGGestionarCarreras.getGestorIGGestionarCarreras().esLafechaCorrecta(pFecha);
					
					if(!esCorrectoLugar){
						//ID-36 y 4
						JOptionPane.showMessageDialog(null, GestorIGInicio.getGestorIGInicio().getTexto(36), GestorIGInicio.getGestorIGInicio().getTexto(4), JOptionPane.WARNING_MESSAGE);
					}else if(!esCorrectoRecorr){
						//ID-37 y 4
						JOptionPane.showMessageDialog(null, GestorIGInicio.getGestorIGInicio().getTexto(37), GestorIGInicio.getGestorIGInicio().getTexto(4), JOptionPane.WARNING_MESSAGE);
					}else if(!esCorrecta){
						//ID-38 y 4
						JOptionPane.showMessageDialog(null, GestorIGInicio.getGestorIGInicio().getTexto(38), GestorIGInicio.getGestorIGInicio().getTexto(4), JOptionPane.WARNING_MESSAGE);
					}else if(!seHaselecModalidad){
						//ID-39 y 4
						JOptionPane.showMessageDialog(null, GestorIGInicio.getGestorIGInicio().getTexto(39), GestorIGInicio.getGestorIGInicio().getTexto(4), JOptionPane.WARNING_MESSAGE);
					}else{
						int t=GestorIGGestionarCarreras.getGestorIGGestionarCarreras().anadirCarrera(pLugar,pRecorrido,pFecha,pModalidad,campeonato);
						if(t==1){
							//ID-40 y 6
							JOptionPane.showMessageDialog(null, GestorIGInicio.getGestorIGInicio().getTexto(40), GestorIGInicio.getGestorIGInicio().getTexto(6), JOptionPane.INFORMATION_MESSAGE);
							dispose();
						}else{
							//ID-41 y 34
							JOptionPane.showMessageDialog(null, GestorIGInicio.getGestorIGInicio().getTexto(41), GestorIGInicio.getGestorIGInicio().getTexto(34), JOptionPane.INFORMATION_MESSAGE);
							dispose();
						}
					}
				}
			});
		}
		return btnAnadir;
	}
	private JButton getBtnCancelar(){
		if(btnCancelar == null){
			//ID-8
			btnCancelar = new JButton(GestorIGInicio.getGestorIGInicio().getTexto(8));
			btnCancelar.addMouseListener(new MouseAdapter() {
				@Override
				public void mouseClicked(MouseEvent e) {
					dispose();
				}
			});
		}
		return btnCancelar;
	}
	
	/*********
	 * Labels
	 * 
	 *********/
	
	private JLabel getLblLugar(){
		if(lblLugar == null){
			//ID-42
			lblLugar = new JLabel(GestorIGInicio.getGestorIGInicio().getTexto(42));
			lblLugar.setHorizontalAlignment(SwingConstants.CENTER);
		}
		return lblLugar;
	}
	private JLabel getLblFechaCom() {
		if (lblFechaCom == null) {
			//ID-43
			lblFechaCom = new JLabel(GestorIGInicio.getGestorIGInicio().getTexto(43));
			lblFechaCom.setHorizontalAlignment(SwingConstants.CENTER);
		}
		return lblFechaCom;
	}
	
	private JLabel getLblInvisible() {
		if (lblInvisible == null) {
			lblInvisible = new JLabel("");
		}
		return lblInvisible;
	}
	
	private JLabel getLblNewLabel() {
		if (lblNewLabel == null) {
			//ID-18
			lblNewLabel = new JLabel(GestorIGInicio.getGestorIGInicio().getTexto(18));
			lblNewLabel.setVerticalAlignment(SwingConstants.TOP);
			lblNewLabel.setHorizontalAlignment(SwingConstants.LEFT);
		}
		return lblNewLabel;
	}
	
	private JLabel getLblRecorrido() {
		if (lblRecorrido == null) {
			//ID-44
			lblRecorrido = new JLabel(GestorIGInicio.getGestorIGInicio().getTexto(44));
			lblRecorrido.setHorizontalAlignment(SwingConstants.CENTER);
		}
		return lblRecorrido;
	}
	
	private JLabel getLblModalidad() {
		if (lblModalidad == null) {
			//ID-45
			lblModalidad = new JLabel(GestorIGInicio.getGestorIGInicio().getTexto(45));
			lblModalidad.setHorizontalAlignment(SwingConstants.CENTER);
		}
		return lblModalidad;
	}
	
	/*****************
	 * Campos de Texto
	 * 
	 ****************/

	
	private JTextField getTextFechaCom() {
		if (textFechaCom == null) {
			textFechaCom = new JTextField();
			textFechaCom.setColumns(10);
		}
		return textFechaCom;
	}

	private JTextField getTextRecorrido() {
		if (textRecorrido == null) {
			textRecorrido = new JTextField();
			textRecorrido.setColumns(10);
		}
		return textRecorrido;
	}
	private JTextField getTxtLugar(){
		if(txtLugar == null){
			txtLugar = new JTextField();
			txtLugar.setColumns(10);
		}
		return txtLugar;
	}
	

	/*****************
	 * Combos
	 * 
	 ****************/
	
	private JComboBox getComboModalidad() {
		if (comboModalidad == null) {
			comboModalidad = new JComboBox();
		}
		String club;
		Iterator<String> itr= GestorIGGestionarCarreras.getGestorIGGestionarCarreras().obtenerModalidades();
		while(itr.hasNext()) {
			club = itr.next();
			comboModalidad.addItem(club);
		}
	
		return comboModalidad;
	}

	
	
	/*****************
	 * Paneles
	 * 
	 ***************/
	
	private JPanel getPanel(){
		if(panel == null){
			panel = new JPanel();
			panel.setLayout(new GridLayout(0, 1, 0, 15));
			panel.add(getPanel_4());
		}
		return panel;
	}
	private JPanel getPanel_1(){
		if(panel_1 == null){
			panel_1 = new JPanel();
			FlowLayout flowLayout = (FlowLayout) panel_1.getLayout();
			flowLayout.setVgap(10);
			panel_1.add(getBtnAnadir()); 
			panel_1.add(getBtnCancelar());
		}
		return panel_1;
	}
	private JPanel getPanel_2(){
		if(panel_2 == null){
			panel_2 = new JPanel();
		}
		return panel_2;
	}
	private JPanel getPanel_4() {
		if (panel_4 == null) {
			panel_4 = new JPanel();
			panel_4.setLayout(new GridLayout(5, 2, 0, 15));
			panel_4.add(getLblLugar());
			panel_4.add(getTxtLugar());
			panel_4.add(getLblRecorrido());
			panel_4.add(getTextRecorrido());
			panel_4.add(getLblFechaCom());
			panel_4.add(getTextFechaCom());
			panel_4.add(getLblInvisible());
			panel_4.add(getLblNewLabel());
			panel_4.add(getLblModalidad());
			panel_4.add(getComboModalidad());
		}
		return panel_4;
	}
}
